package com.itheima.chap03;

import java.util.Scanner;

public class PolymorphismDemo {
    public static void main(String[] args) {
        // 父类类型的变量 指向 子类类型的对象.  jvm会隐式地类型转换，向上转型
//        PhysicalProduct p = new PhysicalProduct("华为Mate70",  7299.00,  672.00);
        Product p = new PhysicalProduct("华为Mate70",  7299.00,  672.00);
        DigitalProduct d = new DigitalProduct("百度云盘", 0.01, "123456");

        createOrder(p);
        createOrder(d);
    }

    public static void createOrder(Product product)// 改成Object也不会报错，直接找祖宗也行；
    {
//      但是会有一个问题，就是无法调用子类特有的方法，因为向上转型，子类已经转为父类对象了，所以只能调用父类方法，而无法调用子类特有的方法
        //如果要调用子类的特有方法，需要向下转型. 注意：向下转型前要做类型检查
        if (product instanceof PhysicalProduct) {
            PhysicalProduct p = (PhysicalProduct) product;// 强转
            p.setWeight(586);
        }
        // 1.展示商品信息
        System.out.println(product.displayINfo());
        // 2.确认订单
        System.out.println("是否确认订单？1.是 2.否");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        while (choice == 1) {
            System.out.println("订单已确认！");
            break;
        }
        while (choice == 2) {
            System.out.println("订单已取消！");
            break;
        }
    }
}
